package com.xzmzhp.service.activity.impl;

import cn.hutool.core.collection.CollUtil;
import com.xzmzhp.dao.activity.ActivityMapper;
import com.xzmzhp.dao.activity.ActivityPersonnelMapper;
import com.xzmzhp.pojo.activity.Activity;
import com.xzmzhp.service.activity.ActivityService;
import com.xzmzhp.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.util.Collections;
import java.util.List;
import java.util.Map;

/**
 * @author: 王源(xm)
 * @create: 2022-04-03 09:08
 * @program: ams
 * @description: 活动管理逻辑类
 */
@Repository
public class ActivityServiceImpl implements ActivityService {

    @Autowired
    private ActivityMapper activityMapper;

    @Autowired
    private ActivityPersonnelMapper activityPersonnelMapper;

    /**
     * 查询活动全部数据
     * @return 活动信息
     */
    @Override
    public List<Activity> findAll() {
        return activityMapper.findAll();
    }

    /**
     * 根据相应的参数查询数据
     * @param param 参数
     *        societyId 社团id
     *        activityName 活动名称
     *        startTime 开始时间
     *        endTime  结束时间
     * @return 活动信息
     */
    @Override
    public List<Activity> findByParam(Map<String, Object> param) {
        //判断参数是否正确
        if (CollUtil.isNotEmpty(param)){
            return activityMapper.findByParam(param);
        }
        return Collections.emptyList();
    }

    /**
     * 获取最新的活动信息
     * @return 活动信息
     */
    @Override
    public Activity findLatestActivities() {
        return activityMapper.findLatestActivities();
    }

    /**
     * 根据id查询活动信息
     * @param activityId 活动id
     * @return 活动信息
     */
    @Override
    public Activity findActivityById(Integer activityId) {
        if (StringUtils.isNotNull(activityId)){
            return activityMapper.selectById(activityId);
        }
        return null;
    }

    /**
     * 添加活动信息
     * @param activity 活动信息
     * @return 是否成功
     */
    @Override
    public Integer addActivity(Activity activity) {
        if (StringUtils.isNotNull(activity)){
            return activityMapper.insert(activity);
        }
        return null;
    }

    /**
     * 修改活动信息
     * @param activity 活动信息
     * @return 是否成功
     */
    @Override
    public Integer exitActivity(Activity activity) {
        if (StringUtils.isNotNull(activity)){
            return activityMapper.updateById(activity);
        }
        return null;
    }

    /**
     * 根据活动id删除节目类型信息
     * @param activityId 活动id
     * @return 是否成功
     */
    @Override
    public Integer delActivity(Integer activityId) {
        if (StringUtils.isNotNull(activityId)){
            return activityMapper.deleteById(activityId);
        }
        return null;
    }

    /**
     * 添加活动人员信息
     * @param activityId 活动id
     * @param personnelId 人员id
     * @return 是否成功
     */
    @Override
    public Integer addActivityPersonnel(Integer activityId,Integer personnelId) {
        if (StringUtils.isNotNull(activityId) && StringUtils.isNotNull(personnelId)){
            return activityPersonnelMapper.addActivityPersonnel(activityId,personnelId);
        }
        return null;
    }

    /**
     * 批量添加活动人员信息
     * @param activityId 活动id
     * @param personnelId 人员id集合
     * @return 是否成功
     */
    @Override
    public Integer addActivityPersonnel(Integer activityId, Integer[] personnelId) {
        if (StringUtils.isNotNull(activityId) && StringUtils.isNotNull(personnelId)){
            return activityPersonnelMapper.addBatchActivityPersonnel(activityId,personnelId);
        }
        return null;
    }

    /**
     * 删除活动人员信息
     * @param activityId 活动id
     * @param personnelId 活动人员id
     * @return 是否成功
     */
    @Override
    public Integer delActivityPersonnel(Integer activityId, Integer personnelId) {
        if (StringUtils.isNotNull(activityId) && StringUtils.isNotNull(personnelId)){
            return activityPersonnelMapper.delActivityPersonnel(activityId,personnelId);
        }
        return null;
    }

    /**
     * 删除活动人员信息
     * @param activityId 活动id
     * @param personnelId 活动人员id集合
     * @return 是否成功
     */
    @Override
    public Integer delActivityPersonnel(Integer activityId, Integer[] personnelId) {
        if (StringUtils.isNotNull(activityId) && StringUtils.isNotNull(personnelId)){
            return activityPersonnelMapper.delBatchActivityPersonnel(activityId,personnelId);
        }
        return null;
    }
}
